Telecommunication or other types of computer networks provide for the transmission of information across some distance through terrestrial, wireless or satellite communication networks. Such communications may involve voice, data or multimedia information, among others. Typically, such networks include several servers or other resources from which the content or network services can be supplied to a requesting end user. Once a content server of the content delivery network (CDN) is selected to provide the requested content to a client device, a communication session is established between the devices to provide the content to the client. The communication session may include the exchange of information and/or data included in packets that aid the devices in effective communication. One such information used by the devices includes a congestion window value (otherwise known as the “CWND”). In general, the CWND is a state variable that limits the amount of data that can be sent by the transmitting device at any one time. This variable is often used to address congestion on the link between the two communicating devices and increase the efficiency of the network.
Network congestion occurs when sent packets from the source (the server) exceed what the destination (the user) or an intermediate network device can handle. For example, the destination or client device may include buffers that store the incoming data or information as the destination device attempts to process the data. In some instances, such as when data is sent to the receiving device at a rate that the receiving device cannot process fast enough, the buffers may fill up at the destination device. This can lead to congestion and packet loss, retransmissions, reduced data throughput, performance degradation, and even network collapse in extreme cases. In another example, network congestion may occur as several devices attempt to communicate over the same link such that packets are lost or slow to arrive at the destination device.
In some instances, the destination device may provide an indication of the rate at which data may be received. With this information, the content server sets an initial CWND and begins providing data packets of the requested content to the client device. In response, the client device transmits acknowledgement messages back to the content server indicating that the transmitting data packets are received. Through an analysis of the acknowledgement messages, the content server may adjust the CWND, higher if all of the data packets are correctly received at the client device or lower if not all of the data packets are received (which indicates congestion on the path between the devices). In this manner, the communicating devices utilize the CWND to control the rate of transmitted data and information to the client device in response to the congestion of the communication session.
Typically, the CWND is set by the content server to an initial default value that is global to the server or to a specific route through the network. However, the default value may either cause congestion on the path or may not be an efficient transmission rate to provide the content. For example, a default initial CWND that is too high may overload or congest the path between the devices, particularly if several communication sessions are utilizing the same path. In another example, a default initial CWND may be too cautious in providing the content to the client device, resulting in slow start-up times or loading times of the content at the client device.